<template>
  <div class="import">
    <el-card>
      <h3 class="title">员工导入</h3>
      <UploadExcel
        :beforeUpload="beforeUpload"
        :onSuccess="onSuccess"
      ></UploadExcel>
    </el-card>
  </div>
</template>
<script>
import UploadExcel from '@/components/UploadExcel/index.vue'
import { sysUserBatch } from '@/api/employees'
export default {
  components: { UploadExcel },
  methods: {
    beforeUpload (file) {
      //   console.log(file)
      //   1k
      // file.size:字节
      const limit1K = file.size / 1024 < 1024
      if (!limit1K) {
        this.$message.error('请导入小于1024kb的excel')
      }
      return limit1K
      //   return false
      //   return true
    },
    // excel时间转换成js时间
    excelTimetoJs (num) {
      const t = new Date((num - 1) * 24 * 60 * 60 * 1000 - 8 * 60 * 60 * 1000)
      t.setYear(t.getFullYear() - 70)
      return t
    },
    async onSuccess (obj) {
      console.log('success后的数据', obj.results)
      // 1:列出转换规则
      const rules = {
        入职日期: 'timeOfEntry',
        姓名: 'username',
        工号: 'workNumber',
        手机号: 'mobile',
        转正日期: 'correctionTime'
      }
      // 2:循环遍历 生成一个新的数组
      // 通过map循环数组，通过Object.keys转换内部对象为数组循环内部对象  ，
      //  通过生成一个新的对象return出去
      const newArr = obj.results.map(item => {
        const obj = {}
        Object.keys(item).forEach(key => {
          obj[rules[key]] = item[key]
        })
        return obj
      })
      //   调用接口
      /*
        excel时间：从1900年到现在天数 天数从1开始，时间点是从8点开始计算的
        js时间：1970年开始  从0开始   时间点从0点开始
        excel时间====>js时间
        43535   ===>  2019/3/11
        */
      newArr.forEach(item => {
        Object.keys(item).forEach(key => {
          if (key === 'correctionTime' || key === 'timeOfEntry') {
            item[key] = this.excelTimetoJs(item[key])
          }
        })
      })

      console.log('newArr', newArr)
      await sysUserBatch(newArr)
      this.$message.success('导入员工成功')
      this.$router.push('/employees')

      //   把一个对象的中文的key转换成英文的key
      // [{姓名:'董浩飞',地址:'深圳'}]===>[{name:'董浩飞',address:'深圳'}]
      /*
    1：列出转换规则的对象
    const rules=  {
          姓名:'name',
          地址:'address'
      }
    2:循环遍历数组生成一个新数组
     新数组=  [{姓名:'董浩飞',地址:'深圳'}].map(item=>{
         item:{姓名:'董浩飞',地址:'深圳'}
         定义一个新的空对象
         const obj={}
            Object.keys(item)===['姓名','地址']
         Object.keys(item).forEach(key=>{
             rules[key]===name
             rules[key]===address
          obj[rules[key]]=item[key]
         })
         return {name:'董浩飞',address:'深圳'}
       })
    */

      //   const arr = [
      //     { 姓名: '董浩飞', 地址: '深圳' },
      //     { 姓名: '彭司机', 地址: '广州' },
      //     { 姓名: '群姐', 地址: '深圳' }
      //   ]
      //   const rules = {
      //     姓名: 'name',
      //     地址: 'address'
      //   }
      //   const newArr = arr.map(item => {
      //     const obj = {}
      //     Object.keys(item).forEach(key => {
      //       obj[rules[key]] = item[key]
      //     })
      //     return obj
      //   })
      //   console.log('对象转换', newArr)
    }
  }
}
</script>
<style lang="scss" scoped>
.import {
  padding: 15px;
  .title {
    text-align: center;
    padding-bottom: 30px;
  }
}
</style>
